from appium import webdriver


class CommonDriver:
    def get_driver(self):
        """
        获取WebDriver实例并进行初始化。

        :return: WebDriver实例
        """
        # 从配置中提取所需的信息
        desc = {
            'platformName': 'Android',  # 目标平台，Android系统
            'platformVersion': '7',  # Android版本，指定为7.x
            'appPackage': 'com.dangdang.buy2',  # 要启动的应用包名
            'appActivity': 'com.dangdang.buy2.StartupActivity',  # 应用的启动Activity
            'noReset': False,  # 设置为False以便在每次测试时重置应用的状态
            'unicodeKeyboard': True,  # 使用Unicode键盘输入，适用于输入中文等特殊字符
            'udid': '127.0.0.1:62025',  # 目标设备的唯一标识符（UDID），这里是连接的Android模拟器或设备
        }

        # 定义命令执行器的URL，指向运行中的Appium Server
        command_executor_url = 'http://127.0.0.1:4723/wd/hub'

        # 创建WebDriver实例，连接到Appium Server，并传入所需的能力配置
        driver = webdriver.Remote(command_executor=command_executor_url, desired_capabilities=desc)

        # 设置隐式等待时间为10秒，以便在查找元素时等待最大10秒
        driver.implicitly_wait(10)

        # 输出连接成功的信息
        print("连接成功")

        # 返回已初始化的WebDriver实例
        return driver


if __name__ == '__main__':
    # 当脚本直接运行时，创建CommonDriver实例并调用get_driver方法以获取WebDriver
    driver = CommonDriver().get_driver()